#pragma once
#include <string>
#include <array>
#include "sqlite3.h"
#include <cmath>
#include <vector>
#include"json.hpp"


class ChessDatabase {
public:
struct ChessPiece {
    int num;                    // 主键
    double x;                   // X坐标
    double y;                   // Y坐标
    std::string color;          // 颜色
    std::string type;           // 类型
    std::array<double, 7> huMoments;    // Hu矩
    double area;                // 轮廓面积
    double perimeter;           // 轮廓周长
    double aspectRatio;         // 宽高比
    std::vector<double> projHist;       // 垂直投影直方图
    std::array<double, 5> zoneDensity;  // 区域密度
};

    explicit ChessDatabase(const std::string& db_path);
    ~ChessDatabase();

    void addChessPiece(const ChessPiece& piece);
    void printAllChessPieces();
    //std::string matchChessPiece(const ChessPiece& piece);

private:
    sqlite3* db;
    void create_table();
};